The present invention relates in general to the field of computer software, and more particularly to the storage of data relating to the operation of computer processes. Even more particularly, the present invention relates to a memory-resident storage method and system for permitting transient storage of data associated with a variety of collaborating computer processes, even when the collaborating computer process are operating on different computers at different locations, and even when the collaborating computer processes may or may not have associated persistent storage mechanisms.
On the Internet, as well as with other on-line networked computer systems, a given application may provide a service to one or more users, while collaborating with many different computer processes on many different computers. The different computer processes may be on different computers and even at different locations. For this reason, in this situation the traditional concept of the client or a server, or a server amongst servers is not relevant. This is true because no one processor will possess the entire state of the application satisfying the needs of the user or users.
One problem related to the above situation occurs when the collaborating computer processes operate on different processors at different times concerns properly and appropriately notifying either the user or one of the collaborating computer processes when a certain event has occurred. When computer processes collaborate with one another, there is a desire to permit a first computer process to assign to a second computer process the job of completing a certain task. After the second computer process accepts the assignment, the first computer process may disengage with the second computer process. The second computer process may then complete the desired assignment. Upon completing the assigned operation, the second computer process should then notify the first computer process that its assigned task has been completed.
Presently, collaborating computer processes do not provide this form of notification for HTTP or Web-based computer processes, but are highly transaction-oriented. The computer programs of these types cannot work with a server to xe2x80x9cpushxe2x80x9d to a collaborating computer process something that another computer process did not originally request. For example, in the Microsoft(copyright) Transaction Server(copyright) environment, server push applications are not feasible. Although Microsoft(copyright) Transaction Server(copyright) applications may provide some form of active channel, currently they do not provide any form of notification or server push function. In addition, no other known methods of collaborating among computer processes in an on-line environment provide this desired type of notification.
Another limitation of existing technologies is that they do not provide a way to determine the addresses of the different processes that may provide different operations for collaborating computer processes. This lack of addressing capability prohibits associations between the server and the associated collaborating computer processes. In such environments, communications are usually point-to-point and protocols are defined on an ad hoc basis. With such a structure, when collaborating processes attempt to communication with one another, there is first the need to determine the protocol or the method in which the two collaborating computer processes will talk to one another. Because of this, there is often a lack of uniformity in the communications that might occur between the collaborating computing processes. This complicates the interface between the collaborating computer processes and may ultimately inhibit or restrict their ability to collaborate.
Another limitation associated with traditional methods and systems for storing data in an HTML or Web-based system is that the systems store information in a flat manner. Thus, in identifying a recipient for a message, such a system simply looks for a user with the desired name and sends the message directly to that user.
Still another limitation associated with conventional methods and systems for permitting computer processes to collaborate concerns the inability to determine all of the potential computer processes that may desire to collaborate with one another. With conventional methods of storing data associated with collaborating computer processes, there is no practical way to usefully detect or meaningfully xe2x80x9clistenxe2x80x9d to which computer processes are collaborating. This lack of ability to listen inhibits fully using the collaborating computer processes during their collaboration.
Yet another limitation associated with storing data relating to collaborating computer processes arises from the fact that traditional methods use databases for a xe2x80x9cpersistentxe2x80x9d store of data. With persistent storing of information, the data survives in a magnetic or other physical form of memory after the computer processes cease to collaborate. For many applications, however, persistently storing data is inefficient and lacks the dynamic characteristics associated with a xe2x80x9ctransientxe2x80x9d storage of data that accompanies the collaborating computer processes. Moreover, for the persistent store of data a storage mechanism must be designed and registered ahead of time for use by the collaborating computer processes. Clearly, this restricts the flexibility of systems that can only store data persistently.
Conventional systems also suffer from the requirement to identify, register and install all of the potential users of or listeners to the collaborating computer processes. This is true even though listening may occur at a point substantially after the initiation of computer process collaboration. With conventional memory-resident storage method and systems, however, no practical way exists to transiently create a listening connection from the server to the collaborating computer processes as the computer processes dynamically collaborate with one another.
Another problem with conventional data storage mechanisms that exist for collaborating computer processes relates to the expense and time necessary to distribute the user-side collaborating technology to users.
Still another limitation exists with conventional solutions relating to the desire for collaborating computer processes. Presently, a number of mechanisms exists for real time communication on the network, such as the Internet. This includes chat products, instant messaging products, and other products that are disparate and that move events in small bits of information from one place to another. These solutions or mechanisms are controlled in different ways and administered in different ways. This creates the problem of expense and complexity in maintaining the different incompatible communication schemes.
Still another limitation associated with conventional methods of permitting computer processes to collaborate with one another associates with the use of network resources dedicated on each end of the communication link between the collaborating computer processes. In traditional applications, two computer processes seeking to collaborate with one another must establish a socket or network resources that permit the communication between the two computer processes. When numerous computer processes desire to collaborate with one another, the requirement that each set of processes consume a socket, can be very expensive in terms of network resources. Moreover, the necessary handshakes, failure preparedness and other requirements for the dedication of network resources for this collaboration is expensive and consumes substantial resources, depending on the number of computer processes with which collaboration is desired.
Therefore, there is a need for a system and method that permit describing events that occur when numerous computer processes collaborate with one another, even when the computer processes may reside on different computers and at different locations.
There is the need for a system that provides notification in the event of a postponed closure of an operation.
There is a further need for a system that overcomes the transactional or synchronous requirement existing in HTTP and Web-based computer processes when numerous computer processes collaborate with one another to achieve synergistic operation.
A further need exists for a method and system that permit the transient storage of data when numerous computer processes collaborate at different locations and on different computers with one another.
Another need exists for a method and system that permits the storage of data associated with collaborating computer processes that does not require the anticipation of all potential listeners or users of the collaborating computer processes.
There is a further need for a method and system that overcomes the uniformity requirements of persistent storage technologies such as relational databases that must be designed and registered ahead of the intended use.
A need also exists for a method and system for storing data when numerous computer processes collaborate with one another for reconstituting the transient state, from persistent storage, of the user or other entity that at an earlier time collaborated with one or more computer processes and that subsequently returns to collaborate with the computer processes.
A need exists for a method and system that permit the storage of data associated with collaborating computer processes to exchange event notifications and other small bits of information that many solutions, such as chat, instant messaging, presence protocol (e.g. xe2x80x9cbuddy listsxe2x80x9d), and other solutions require.
Still another need exists for a method and system that stores data transiently when numerous computer processes collaborate with one another, but which uses minimal network resources, or sockets. Related to this need to minimize the use of network resources for transient storage is the need to reduce the requirements for hand shakes and failure preparedness and recovery functions associated the use of network resources.
In accordance with the present invention a memory resident storage method and system for storing data associated with the plurality of collaborating computer processes is provided. This substantially eliminates or reduces disadvantages and problems associated with previously developed methods and systems for storing data when computer processes collaborate with one another, such as persistent storage methods and systems existing in known computer processes.
More specifically, the present invention provides a memory-resident transient data storage system for storing data associated with the plurality of collaborating computer processes. When selected ones of the computer processes collaborate with other ones of the collaborating computer processes, the present invention provides instructions for dynamically establishing a hierarchical organization relating to a plurality of nodes. Each of the plurality of nodes establishes a path with at least selected ones of the plurality of collaborating computer processes. Instructions of the present system describe a plurality of the paths according to the hierarchical organization for generating a plurality of hierarchical path descriptions between selected ones of the plurality of nodes and be at least selected ones of the plurality of collaborating computer processes. The invention further includes instructions for communicating with a communications network server the plurality of hierarchical path descriptions. This permits the transient storage of data that describes the path between the nodes and the plurality of collaborating computer processes.
With the present invention, each datum is stored in a well-defined object. Each such object is identified by a name, or xe2x80x9cpathxe2x80x9d, given by the position of the object in the hierarchical organization. Said collaborating processes may exchange information asynchronously by setting and getting the data stored in the plurality of objects.
With the present invention, events occur at each path. Events are caused by originators, each of which is associated with a path. Because events occur on a path, the method and system of present invention permit determining the originator of a particular event. This provides information on the originator, what the originator acted on, and the action itself. In essence, therefore, the present invention identifies, through the creation of an event at a particular path, what the originator said or did, and from where the originator made the statement or took the action.
With the establishment of paths between the collaborating computer processes, there is the need to identify a computer process for which listening for events is desired. With the present invention, the object may not even exist at the time the desire of listening is established and listening is attempted. However, the act of requesting the system to listen to a named path will cause the path to be created.
A technical advantage of the present invention is that every process has the ability to be dynamically identified as a path, with each of the paths being self-describing.
Another technical advantage that the present invention provides is the ability to listen to a path and hear events asynchronously on that path. Therefore, the present invention avoids the requirement to ask for notification of whether a task has been completed. This eliminates xe2x80x9cpolling,xe2x80x9d i.e. repeatedly querying a collaborating computer process of whether an event has occurred. With the present invention, a server, and not the process requiring the notification, will initiate a call back to the process to notify the process of the event having occurred.
Still another technical advantage provided by the present invention is presenting a hierarchical organization for the transient storage of data, as opposed to a flat naming structure that presently dominates Internet and other network applications.
A technical advantage that the present invention also provides is asynchronous listening for events. This eliminates the need for consistently querying whether an event has been completed. The asynchronous listening feature permits the process to which an operation has been referred to respond asynchronously to the referring operation that the event has in fact occurred.
Still other technical advantages of the present invention include a common protocol, reducing and simplifying protocol handling, fault-recovery, and administration.
With the present invention, paths may be created without knowing in advance who will desire to query the path""s data value, or send events to that path, or listen to events on that path. With this technical advantage, the present invention posses increased flexibility in operation that is substantially different from prior methods of storing data for collaborating computer processes.
Another technical advantage of the present invention is that listening to events exploits the organizing effects of the hierarchical name space. This permits the ability to propagate events up the hierarchical structure of information. The hierarchical structure permits listening to aggregations at the lower levels of the hierarchical structure. Accordingly, any event occurring beneath the node to which listening has been directed will be heard at the node for which listening has been directed.
The present invention also provides the technical advantage of a xe2x80x9ctellxe2x80x9d function for broadcasting down the hierarchical structure so that every node beneath the node that is telling of an event will hear of the event.
Still another technical advantage of the present invention is the present invention provides a broadcast method so that more than one process can listen, and each hears the entire event. The originator of the event need not determine who is listening or on which level listening is occurring. By virtue of the organized hierarchical structure that the present invention provides, the present invention avoids the disorganized point-to-point communications that occur in traditional or conventional data storage methods and systems.
Another technical advantage of the present invention is that when a set of computer processes begins to collaborate, all of the processes that desire to listen to the various paths reconstitute the hierarchical structure and state that would have existed in the presence of a persistent store. The present invention provides a transient store in which the processes may xe2x80x9csetxe2x80x9d what the other processes desire to xe2x80x9cgetxe2x80x9d or xe2x80x9clistenxe2x80x9d to in creating necessary paths for transiently storing data. Because some processes xe2x80x9clistenxe2x80x9d and other processes xe2x80x9csayxe2x80x9d events, a reconstituted state arises dynamically within the server as the plurality of cooperating processes create the paths they require. This provides a distributed, dynamic alternative to the use of a persistent store of the data, and permits the transient storage of data outside the computer processes that would otherwise require data to be persistently stored.
Yet another technical advantage that the present invention provides is a flexible system that permits tapping into the collaborating computer processes after the initiation of the collaboration for reporting, administration, dynamic process monitoring, and other functions. The present invention makes it easier to perform operations and collaborations in a uniform manner than conventional ad hoc methods of defining protocols for communications that occur during computer process collaboration.
The present invention takes technical advantage of the fact that listening is desired of a given computer process. With the present invention, listening generates part of the data that setting values simply finishes off.
The present invention also provides the technical advantage of permitting the initialization of a transient store in coordination with persistent store mechanisms such as a relational database. This is effected by using the hierarchical organization to aggregate like conceptual entities, and having service processes (called xe2x80x9cManagersxe2x80x9d in the specific embodiment) xe2x80x9clistenxe2x80x9d at a higher level in the hierarchy. The creation event for the entity is thus heard by one or more managers, which reconstitute the entity""s transient state from persistent storage. Thus, the method and system of the present invention promote a synergistic combination of both transient and persistent storage of data as appropriate with a variety of computer processes seek to collaborate with one another.
The present invention also provides the technical advantage of a uniform naming convention for listening to the different collaborating computer processes. With the present invention, the collaborating computer processes simply become different applications of a single mechanism with conventions that eliminate duplicative administrative and streamline usage.
A technical advantage that the present invention provides is a path structure that permits requesting service from a transient store mechanism in a very lightweight and effective way. This is of particular value when employing very lightweight objects such as those supported by the Microsoft(copyright) Transaction Server(copyright) (MTS). The structure of the present invention reuses a single protocol to obtain information concerning the completion of an event with collaborating computer processes. A path that calls a particular node or collaborating computer processes can use the same path or a related path to notify the relevant processes of the event completion. Thus, the present invention, while not replacing persistent store technology, is synergistic and supplementary for permitting the transient store of data for the computer process collaboration.
Yet another technical advantage that the present invention provides is the use of a single protocol that requires only one socket, and therefore only one failure preparation or recovery resource for collaboration among a large number of collaborating computer processes. As a result, the present invention provides much more efficient storage of data arising through the collaboration of a plurality of computer processes, as well as increased efficiency associated with collaboration. The present invention requires only one socket because communications occur through a single connection. The present invention permits the routing of connections to the appropriate place or computer process because of the naming structure the path convention of its uses. Thus, two machines communicating with one another in providing collaborating computer processes only require a single communications link. This would be true for many computer processes collaborating with one another.
Another technical advantage of the present invention is its ability to take information that is stored in a database in a highly stylized fashion and avoid the need for the database to save transient data. By using the Microsoft Transaction Server, or similar server, the present invention employs light-weight objects. This permits flexibly scaling the systems of collaborating computer processes using the present invention, as well as storing small amounts of information in a rapidly accessible and flexible manner. Accordingly, information flows quickly and effectively without putting an excessive load on the persistent store.